package com.naiterui.ehp.bs.doctor.dao;

import com.naiterui.common.repository.page.Page;
import com.naiterui.common.repository.page.PageParamVO;
import com.naiterui.ehp.bp.domain.Doctor;
import com.naiterui.ehp.bp.domain.NoticeInfo;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.doctor.vo.CustomNoticeInfo;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface INoticeInfoDao {

    NoticeInfo get(Long id);

    /**
     * 获取用户可查看公告列表(无分页)
     * INoticeInfoDao.getUserNotice()

     * @Date 2016年1月15日
     * @since 2.0.0
     * @param beginTime
     * @return
     */
    List<NoticeInfo> getUserNotice(Date beginTime);

    /**
     * 获取用户可查看公告
     * INoticeInfoDao.getNoticePage()

     * @Date 2016年3月29日
     * @since 2.3.0
     * @param pageParam
     * @param limitTime
     * @param topic
     * @param doctor
     * @return
     */
    Page<CustomNoticeInfo> getNoticePage(PageParamVO pageParam, String limitTime, Long topic, Doctor doctor) throws BusinessException;

    /**
     * 根据公告id列表查询公告
     * INoticeInfoDao.getNoticeInfoByList()
     * @Author lichaopi
     * @Date 2018年4月20日
     * @since 1.0.0
     * @param list
     * @return
     */
    Map<Long, NoticeInfo> getNoticeInfoByList(List<Long> list);

    /**
     * 获取最近一条公告
     * INoticeInfoDao.getLateNoticeInfo()
     * @Author lichaopi
     * @Date 2018年7月25日
     * @since 1.0.0
     * @param doctor
     * @param topic
     * @return
     */
    NoticeInfo getLateNoticeInfo(Doctor doctor, Long topic) throws BusinessException;

}
